package com.osce.interfaces.score;

import com.baomidou.mybatisplus.extension.service.IService;
import com.csce.domain.entity.score.ScoreExExamSession;
import com.csce.domain.entity.score.ScoreSheet;
import com.csce.domain.entity.score.dto.ScoreScoreDto;
import com.csce.domain.entity.score.vo.ScoreScoreVo;

import java.util.List;

/**
 * 考试场次Service接口
 *
 * @author zzx
 * @since 2023-09-07
 */
public interface IScoreExExamSessionService extends IService<ScoreExExamSession> {

    /**
     * 查询考试场次
     *
     * @param id 考试场次主键
     * @return 考试场次
     */
    ScoreExExamSession selectScoreExExamSessionById(Long id);

    /**
     * 查询考试场次列表
     *
     * @param scoreExExamSession 考试场次
     * @return 考试场次集合
     */
    List<ScoreExExamSession> selectScoreExExamSessionList(ScoreExExamSession scoreExExamSession);

    /**
     * 新增考试场次
     *
     * @param scoreExExamSession 考试场次
     * @return 结果
     */
    int insertScoreExExamSession(ScoreExExamSession scoreExExamSession);

    /**
     * 修改考试场次
     *
     * @param scoreExExamSession 考试场次
     * @return 结果
     */
    int updateScoreExExamSession(ScoreExExamSession scoreExExamSession);

    int clearExaminer(Long id);

    /**
     * 批量删除考试场次
     *
     * @param ids 需要删除的考试场次主键集合
     * @return 结果
     */
    int deleteScoreExExamSessionByIds(Long[] ids);

    /**
     * 删除考试场次信息
     *
     * @param id 考试场次主键
     * @return 结果
     */
    int deleteScoreExExamSessionById(Long id);

    int deleteScoreExExamSessionByExamId(Long examId);

    int deleteScoreExExamSessionByExamIds(Long[] examIds);

    /**
     * 根据考试编号查询节次列表
     *
     * @param examId 考试编号
     */
    List<ScoreExExamSession> selectScoreExExamSessionsByExamId(Long examId);

    int batchExExamSession(List<ScoreExExamSession> sessions);

    /**
     * 获取考试成绩列表
     */
    List<ScoreScoreVo> getExamScoreList(ScoreScoreDto scoreScoreDto);


    ScoreSheet selectAllotSheetParse(Long allotId);
}
